package org.tom.basic.controller;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.tom.basic.util.FastDfsUtil;
import org.tom.basic.util.JsonResult;

@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {
    @PostMapping
    public JsonResult upload(@RequestPart (required = true,value = "file") MultipartFile file){ // @RequestPart获取文件 required文件是否必须存在
        try {
            // 获取文件名
            String originalFilename = file.getOriginalFilename();
            // 获取文件后缀
            String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);// jpg这种后缀工具类中的方法需要这样的形参
            //  调用工具类中的方法上传文件,返回的就是文件的地址可以直接存入数据库中如果需要访问就在path前面加47.95.117.210:8888
            String path = FastDfsUtil.upload(file.getBytes(), substring); // file.getBytes()文件转换成字节数组类型
            return JsonResult.me().setResultObj(path);
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.me().setMsg("系统繁忙");
        }
    }

    @DeleteMapping
    public JsonResult delete(@RequestParam String path){ // 由于地址栏传值是？xx=XX所以需要注解@RequestParam，之前是地址栏/XX所以使用注解@PathVariable
        try {
            String sub = path.substring(1); // 将最开始的斜杠去除掉
            String groupName = sub.substring(0, sub.indexOf("/"));// 截取组前面的字符串
            String remotePath = sub.substring(sub.indexOf("/") + 1); // 获取文件名加后缀 M00/01/87/rBE3kWF5J06AXnWAAAYjAAm1wu0493.jpg
            // 调用工具类中的方法删除，第一个参数是组名，第二个参数是 文件名加后缀 文件名包括组名后面所有的东西 M00/01/87/rBE3kWF5J06AXnWAAAYjAAm1wu0493.jpg
            FastDfsUtil.delete(groupName, remotePath);
            return JsonResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.me().setMsg("系统繁忙");
        }

    }
}
